package setting

import (
	"fmt"
	"gopkg.in/ini.v1"
)

type InitFunc func(config *ini.File) error

func Init(configPath string) error {
	config, err := ini.Load(configPath)
	if err != nil {
		return fmt.Errorf("faild to load config file: %w", err)
	}
	for _, initFunc := range []InitFunc{
		initLogger,
		initRedisClient,
		initDatabase,
		initRpc,
		initServer,
		initMailServer,
		initAdmin,
	} {
		if err = initFunc(config); err != nil {
			return err
		}
	}
	return nil
}
